/**
 * ListaAtividades.java
 *  
 * Este código foi baseado no exemplo do site do ZK: http://www.zkoss.org/zkdemo/tree/dynamic_tree
 * 
 * Projeto: SGA-LEDS
 * 
 * Rodrigo Soares Maia
 * IFES - Instituto Federal do Espírito Santo - Campus Serra
 */

package controleAtividades.cih;

import controleAtividades.cci.CtrlAtividades;
import controleInterno.cci.CtrlInterno;
import controleAtividades.cdp.Atividade;
import controleInterno.cdp.Colaborador;
import controleAtividades.cdp.NivelAtividade;
import java.util.ArrayList;
import java.util.List;

public class ListaAtividades
{
    private TreeNode root;
    
    CtrlAtividades ctrl = CtrlAtividades.getInstance();
//	public ListaAtividades() {
//		root = new TreeNode(null,
//			new TreeNode[] {
//				new TreeNode(new Atividade("Friend"),new TreeNode[] {
//					new TreeNode(new Atividade("High School"), new TreeNode[] {
//						new TreeNode(new Atividade("Fernando Terrell", "Atividade.png")),
//						new TreeNode(new Atividade("Stanley Larson", "Atividade.png"))
//					},true),
//					new TreeNode(new Atividade("University"), new TreeNode[] {
//						new TreeNode(new Atividade("Camryn Breanna", "Atividade.png")),
//						new TreeNode(new Atividade("Juliana Isabela","Atividade-gu.png")),
//						new TreeNode(new Atividade("Holden Craig", "Atividade-g.png"))
//					}),
//					new TreeNode(new Atividade("Emma Jones", "Atividade-i.png")),
//					new TreeNode(new Atividade("Eric Franklin",  "Atividade.png")),
//					new TreeNode(new Atividade("Alfred Wong", "Atividade.png")),
//					new TreeNode(new Atividade("Miguel Soto",  "Atividade.png"))
//				},true),
//				new TreeNode(new Atividade("Work"),new TreeNode[] {
//					new TreeNode(new Atividade("Andrew Willis",  "Atividade.png")),
//					new TreeNode(new Atividade("Russell Thomas",  "Atividade-jq.png")),
//					new TreeNode(new Atividade("Donovan Marcus",  "Atividade.png"))
//				})
//			},true
//		);
//	}
        
    //recebe todas as atividades de um projeto para criar a arvore
    //para cada atividade que "eh raiz" sao criadas as arvores filhas
    public ListaAtividades(List<Atividade> listaAtividades, NivelAtividade nivel, Colaborador colaborador) {
            ArrayList<TreeNode> nosAux = new ArrayList<>();
            
            for (Atividade atividade : listaAtividades)
            {
                //se nao tiver pai
                if (atividade.getAtividadePai() == null)
                {
                    nosAux.add(criaNo(atividade, nivel, colaborador));
                }
            }
            
            TreeNode[] nos = new TreeNode[nosAux.size()];
            
            //nos = nosAux.toArray(nos);
            
            for (int i = 0; i < nosAux.size(); i++)
            {
                nos[i] = nosAux.get(i);
            }
            
          root = new TreeNode(null, nos, true);
        }
        
        public TreeNode criaNo(Atividade a, NivelAtividade n, Colaborador c) {
            List<Atividade> filhas = ctrl.obterFilhas(a, n, c);
            
            System.out.println("Nível " + n);
            System.out.println("Filhas de " + a.getDescricao() + ": " + filhas);
            
            //se tem filhas
            if (!filhas.isEmpty())
            //if (true) //TODO sempre tem que criar com filhas :/ senao nao da pra adicionar...
            {
                TreeNode[] nosDasFilhas = new TreeNode[filhas.size()];
                
                for (int i = 0; i < filhas.size(); i++)
                {
                    nosDasFilhas[i] = criaNo(filhas.get(i), n, c);
                }
                
                return new TreeNode(a, nosDasFilhas);
            }
            else
            {
                return new TreeNode(a);
            }
        }
        
	public TreeNode getRoot() {
		return root;
	}
}
